NoSQL ডেটাবেস হল ডাটাবেস প্রযুক্তির একটি গোষ্ঠী যা SQL-based relational databases এর বাইরে কাজ করে। NoSQL ডেটাবেস সাধারণত ডকুমেন্ট, কী-ভ্যালু স্টোর, গ্রাফ, বা কলাম-ফ্যামিলি ডাটাবেস হিসাবে সংগঠিত থাকে। এই ডেটাবেসগুলি সাধারণত স্কেলেবিলিটি, লোড ভারসাম্য এবং দ্রুত তথ্য পুনরুদ্ধারের জন্য ডিজাইন করা হয়।
যদিও JPA (Java Persistence API) মূলত relational databases (RDBMS) এর জন্য ডিজাইন করা হয়েছে, কিছু NoSQL ডেটাবেস যেমন MongoDB এবং Cassandra এর জন্য Spring Data JPA এর বিকল্প হিসাবে Spring Data MongoDB বা Spring Data Cassandra ব্যবহার করা হয়।
Spring Data এর মাধ্যমে JPA ব্যবহার করে NoSQL ডেটাবেসের সঙ্গে ইন্টিগ্রেশন সম্ভব হয়, কিন্তু এটি কিছু ক্ষেত্রে JPA specification এর কিছু অংশের পরিবর্তে ডেটাবেসের নিজস্ব API বা ফিচার ব্যবহার করে।
Spring Boot এবং MongoDB এর সাথে JPA এর ব্যবহার
এখানে আমরা Spring Data MongoDB ব্যবহার করে MongoDB NoSQL ডেটাবেসের সাথে Spring Boot এবং JPA-এর ইন্টিগ্রেশন দেখব।
১. Maven ডিপেনডেন্সি
প্রথমে, pom.xml ফাইলে Spring Boot এবং MongoDB এর জন্য প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করতে হবে:
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter Data MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- Spring Boot Starter Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
এখানে spring-boot-starter-data-mongodb MongoDB এর সাথে Spring Boot এর ইন্টিগ্রেশন সক্ষম করে।
২. MongoDB কনফিগারেশন সেটআপ
application.properties ফাইলে MongoDB এর কনফিগারেশন যুক্ত করতে হবে:
spring.data.mongodb.uri=mongodb://localhost:27017/testdb
spring.data.mongodb.database=testdb
এখানে, mongodb://localhost:27017/testdb MongoDB এর URI এবং testdb হল MongoDB ডাটাবেসের নাম।
৩. MongoDB Entity তৈরি করা
MongoDB তে @Document অ্যানোটেশন ব্যবহার করা হয়, যা JPA এর @Entity অ্যানোটেশন এর সমতুল্য। MongoDB Entity ক্লাসে ডকুমেন্টের তথ্য সংরক্ষণ করা হয়।
Employee.java
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "employees")
public class Employee {
@Id
private String id;
private String name;
private String department;
// Default constructor
public Employee() {}
// Parameterized constructor
public Employee(String name, String department) {
this.name = name;
this.department = department;
}
// Getters and Setters
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
এখানে, @Document অ্যানোটেশন MongoDB ডকুমেন্ট হিসেবে Employee Entity কে চিহ্নিত করে এবং @Id ব্যবহার করে id ফিল্ডটি MongoDB ডকুমেন্টের প্রাইমারি কী হিসেবে কাজ করবে।
৪. MongoDB Repository তৈরি করা
Spring Data MongoDB ব্যবহার করে MongoRepository ইন্টারফেস ব্যবহার করে CRUD অপারেশন করতে পারবেন। MongoDB ডেটাবেসের জন্য এটি একটি বিশেষভাবে প্রস্তুত করা ইন্টারফেস।
EmployeeRepository.java
import org.springframework.data.mongodb.repository.MongoRepository;
public interface EmployeeRepository extends MongoRepository<Employee, String> {
Employee findByName(String name);
}
এখানে MongoRepository ইন্টারফেসের মাধ্যমে Employee Entity তে CRUD অপারেশন সহজভাবে করা যাচ্ছে। findByName মেথডটি নামের ভিত্তিতে কর্মচারী খুঁজে বের করবে।
৫. EmployeeService তৈরি করা
EmployeeService.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
public Employee saveEmployee(Employee employee) {
return employeeRepository.save(employee);
}
public Employee getEmployeeByName(String name) {
return employeeRepository.findByName(name);
}
}
এখানে EmployeeService ক্লাসের মাধ্যমে EmployeeRepository থেকে ডেটা পরিচালনা করা হচ্ছে।
৬. EmployeeController তৈরি করা
EmployeeController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/employees")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@PostMapping
public Employee createEmployee(@RequestBody Employee employee) {
return employeeService.saveEmployee(employee);
}
@GetMapping("/{name}")
public Employee getEmployeeByName(@PathVariable String name) {
return employeeService.getEmployeeByName(name);
}
}
এখানে, EmployeeController ক্লাসে HTTP রিকোয়েস্ট হ্যান্ডলিং করা হচ্ছে, এবং EmployeeService থেকে ডিপেনডেন্সি ইনজেক্ট করা হচ্ছে।
৭. Spring Boot অ্যাপ্লিকেশন চালানো
Application.java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
এখানে, @SpringBootApplication অ্যানোটেশন দিয়ে Spring Boot অ্যাপ্লিকেশন শুরু করা হচ্ছে।
সারাংশ
Spring Boot এবং MongoDB এর মধ্যে ইন্টিগ্রেশন সম্ভব Spring Data MongoDB ব্যবহার করে, যা NoSQL ডেটাবেসের জন্য ডেটা ম্যানিপুলেশন সহজ করে। JPA এর মতো MongoDB এর জন্য @Document অ্যানোটেশন এবং MongoRepository ব্যবহার করা হয়, যা CRUD অপারেশনকে সহজতর করে তোলে। Spring Boot এবং MongoDB এর সাথে কাজ করার মাধ্যমে আপনি দ্রুত এবং সহজে NoSQL ডেটাবেসের সাথে যোগাযোগ করতে পারবেন এবং ডেটাবেস অপারেশন করতে পারবেন।
Read more